package com.kevin.designpattern.singlenton;

public class HungrySingletonTest {

    public static void main(String[] args) {

        /**
         * 类加载的过程
         * 1.加载二进制数据到内存中，生成对应的Class数据结构
         * 2.连接：a。验证，b。准备（给类的静态成员变量赋默认值），c。解析
         * 3.初始化：给类的静态变量赋初值
         */
        // Class<HungrySingleton> hungrySingletonClass = HungrySingleton.class;
        System.out.println(HungrySingleton.name);// HungrySingleton init   kevin
        HungrySingleton instance = HungrySingleton.getInstance();// HungrySingleton init   kevin
    }
}

/**
 * 初始化(当前类是启动类即main函数的所在类，直接进行new的操作，访问静态属性，使用反射访问类，初始化一个类的子类等等)
 */
class HungrySingleton {

    public static String name = "kevin";

    static {
        System.out.println("HungrySingleton init");
    }

    private static HungrySingleton instance = new HungrySingleton();

    public static HungrySingleton getInstance() {

        return instance;
    }
}
